const jwt = require("jsonwebtoken");
require("dotenv").config;

// 定义 JWT 校验中间件
const authenticateJWT = (req, res, next) => {
  

  // 从请求头获取 token
  const token = req.headers.authorization && req.headers.authorization.split(" ")[1];

  if (!token) {
    return res.status(401).json({ message: "未授权：未提供 Token" });
  }

  try {
    // 验证 token
    const secretKey = process.env.JWT_SECRET_KEY;
    const decoded = jwt.verify(token, secretKey);

    // 将解码后的用户信息存储到 req 对象中
    req.user = decoded;
    next(); // 继续处理请求
  } catch (err) {
    if (err.name === "TokenExpiredError") {
      return res.status(401).json({ message: "未授权：Token 已过期" });
    }
    return res.status(403).json({ message: "禁止访问：Token 无效" });
  }
};

module.exports = authenticateJWT;
